// 节流阀
// 防抖是将多次执行变为最后一次执行，
// 节流是将多次执行变为在规定时间内只执行一次。
// 因为ES6没有arguments伪数组了所以需要用...args来接受剩余参数，但是
// setTimeout的this指向window! 还需要apply一下
const throttle = (fn, delay = 500) => {
  let flag
  return (...args) => {
    if (!flag) return
    flag = false
    setTimeout(() => {
      fn.apply(this, args)
      flag = true
    }, delay)
  }
}
// var a = 10
// window.a = 11
// console.log(a);
// 先打印11，后打印10
function throttle(fn, delay) {
  let valid = true
  return function () {
    if (!valid) {
      return false
    }
    valid = false
    setTimeout(() => {
      fn()
      valid = true
    }, delay)
  }
}

function throttle(fn, delay) {
  // 一次性的通行证！
  let valid = true
  return function () {
    // 闭包不结束valid一直是false，不能再次执行
    if (!valid) {
      return false
    }
    valid = false
    setTimeout(() => {
      fn()
      valid = true
    }, delay)
  }
}
